/**
 * 
 */
package ao.com.bna.dao;

import java.util.List;

import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import ao.com.bna.beans.ItemPedido;
import ao.com.bna.beans.Pedido;

public class PedidoDao extends HibernateDaoSupport {

	/**
	 * @see Metodo que lista.
	 */
	public List<Pedido> listar() {
		return getHibernateTemplate().loadAll(Pedido.class);
	}

	/**
	 * @see Metodo para obten��o de um registo passando como parametro o id.
	 */
	public Pedido obterPorID(Long id) {
		return (Pedido) getHibernateTemplate().get(Pedido.class, id);
	}

	/**
	 * @see Metodo que actualiza o registo na tabela
	 */
	public void gravar(Pedido info) {
		getHibernateTemplate().saveOrUpdate(info);
	}

	/**
	 * @see Metodo que remove o registo na tabela
	 */
	public void remover(Pedido info) {
		getHibernateTemplate().delete(info);
	}

	// ------------------------------------------------------------

	/**
	 * @see Metodo que actualiza o registo na tabela
	 */
	public void gravar(Pedido info, List<ItemPedido> items) {
		Transaction tx = this.getSessionFactory().openSession()
				.getTransaction();
		try {
			tx.begin();
			getHibernateTemplate().saveOrUpdate(info);
			if (items.size() < 1) {
				tx.rollback();
				return;
			}
			for (ItemPedido itemPedido : items) {
				itemPedido.setPedido(info);
				getHibernateTemplate().saveOrUpdate(itemPedido);
			}
			tx.commit();
		} catch (Exception ex) {
			tx.rollback();
			ex.printStackTrace();
		}
	}

}
